const mysql = require('mysql2/promise');
require('dotenv').config({ path: '.env.local' });

// 这里输入您的MySQL密码，通常在安装MySQL时设置
const MYSQL_PASSWORD = '123456'; // 请修改为您的实际密码

async function createDatabase() {
  try {
    console.log('正在尝试连接到MySQL...');
    console.log(`使用配置: 主机=${process.env.DB_HOST}, 用户=${process.env.DB_USER}`);

    // 创建不指定数据库的连接
    const connection = await mysql.createConnection({
      host: process.env.DB_HOST || 'localhost',
      user: process.env.DB_USER || 'root',
      password: MYSQL_PASSWORD, // 使用硬编码的密码
      port: Number(process.env.DB_PORT) || 3306
    });

    console.log('已连接到MySQL服务器');
    
    // 创建数据库
    await connection.query(`CREATE DATABASE IF NOT EXISTS ${process.env.DB_NAME || 'xiaoyoubao'}`);
    console.log(`数据库 ${process.env.DB_NAME || 'xiaoyoubao'} 已创建或已存在`);
    
    // 使用创建的数据库
    await connection.query(`USE ${process.env.DB_NAME || 'xiaoyoubao'}`);
    
    // 创建用户表
    await connection.query(`
      CREATE TABLE IF NOT EXISTS users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(50) NOT NULL UNIQUE,
        password VARCHAR(255) NOT NULL, 
        email VARCHAR(100) NOT NULL UNIQUE,
        avatar VARCHAR(255),
        bio TEXT,
        created_at DATETIME NOT NULL,
        updated_at DATETIME NOT NULL
      )
    `);
    console.log('用户表已创建或已存在');
    
    // 创建索引
    try {
      await connection.query('CREATE INDEX idx_username ON users(username)');
      console.log('用户名索引已创建');
    } catch (err) {
      console.log('用户名索引已存在或创建失败:', err.message);
    }
    
    try {
      await connection.query('CREATE INDEX idx_email ON users(email)');
      console.log('邮箱索引已创建');
    } catch (err) {
      console.log('邮箱索引已存在或创建失败:', err.message);
    }
    
    console.log('数据库初始化完成！');
    
    // 更新.env.local文件中的密码
    console.log('请确保在.env.local文件中更新MySQL密码');
    console.log(`DB_PASSWORD=${MYSQL_PASSWORD}`);
    
    await connection.end();
    
  } catch (error) {
    console.error('创建数据库时出错:', error);
    console.error('请确保MySQL服务已启动，并且用户名和密码正确');
  }
}

createDatabase(); 